package AplicacionDelegate;

import grupo1.fotomultas.Fotomultas.HomeVehiculos;
import grupo1.fotomultas.Fotomultas.Notificaciones.NotificationSender;

public class AplicacionDelegado {
	
	private static AplicacionDelegado instance = null;
	private AplicacionDelegadoConfiguracion configuracion;
	
	public static void createAplicationDelegado(AplicacionDelegadoConfiguracion configuracion){
		if(instance == null){
			instance = new AplicacionDelegado(configuracion);
			return;
		}
		throw new RuntimeException("El delegado ya fue creado, por favor reset antes de reconfigurar");
	}
	
	private AplicacionDelegado(AplicacionDelegadoConfiguracion aConfiguracion){
		configuracion = aConfiguracion;
	}

	public static AplicacionDelegado Instance() {
		if (instance == null){
			throw new RuntimeException("Debe configurar el aplicaction delegate");
		}
		return instance;
	}
	
	public HomeVehiculos HomeVehiculos(){
		return configuracion.homeVehiculos();
	}
	public grupo1.fotomultas.Fotomultas.Notificaciones.HomeNotificaciones HomeNotificaciones(){
		return configuracion.homeNotificaciones();
	}
	
	public NotificationSender smsSender(){
		return configuracion.smsSender();
	}
	public NotificationSender mailSender(){
		return configuracion.mailSender();
	}

	public static void reset() {
		instance = null;
	}
}
